﻿/*
  --============================================================================================
  --============================================================================================
  -- Fichier          :	Iterateur.cs
  -- Objet			  :	Interface d'itérateur sur une liste d'élement
  -- Auteur			  :	S. Le Gouellec
  -- Date de création : 07/2014
  --                              :
  --                              :
  -- Notes spéciales		  :
  -- Historique			  :
  ----------------------------------------------------------------------------------------------
  -- |     Code    |  Vers. |   Date   | Auteur	|                  Description
  -- |  Dem/inc/pr |  	    |          |        |         
  -- -------------------------------------------------------------------------------------------
  -- |             |   1.0  | 07/2014  |  SLE	| Création
  -- |	           |	    |	       |        |
  --============================================================================================
  --============================================================================================
*/

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Models.ExportPV
{
    /// <summary>
    /// Interface d'itérateur sur une liste d'élement
    /// </summary>
    public interface Iterateur
    {
        /// <summary>
        /// Retourne le premier objet.
        /// </summary>
        /// <returns>Retourne le premier objet.</returns>
        /// 
        object First();

        /// <summary>
        /// Retourne le prochain élément de la liste.
        /// </summary>
        /// <returns>Retourne le prochain élément de la liste.</returns>
        object Next();

        /// <summary>
        /// Permet de savoir si l'itération est finie ou non.
        /// </summary>
        /// <returns>Retourne un boolean pour savoir si l'itération est finie.</returns>
        Boolean Finish();

        /// <summary>
        /// Retourne l'objet courant de cette itération.
        /// </summary>
        object CurrentElement{ get; }

        /// <summary>
        /// Retourne et Affecte la liste des éléments à itérer.
        /// </summary>
        Liste ListData { get;  set; }
    }
}
